package cn.tedu.map;/**
 * @Author 金帮嘉诚 @Date 2021-06-23 星期三 8:40
 */
/*本类用于测试Map迭代*/

import java.awt.geom.Ellipse2D;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * 知识点
 * Map迭代的两种方式，都要将通过Set来迭代
 * 方式一：ketSet方法，创建Key键的Set试图
 * 方式二：entrySet方法，创建entry<key,value>的Set视图
 *
 * 两种方式可以总结如下步骤：
 * 1.创建对应Set对象
 * 2.1获取Set对象的迭代器
 * 2.2循环迭代器
 * 2.3通过迭代获取key或者entry，从而获取Map的key值和value值,并输出
 */
public class TestMap2 {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap();
        map.put(1000,"哈哈哈哈哈");
        map.put(1001,"一一一一一");
        map.put(1002,"~~~~~~~~");
        map.put(1003,"？？？？？");
        map.put(1004,"！！！！！");

        byKeySet(map);
        byEntrySet(map);
        Map<Character,Character> map1=new HashMap<>();
        map1.put('1','哈');
        map1.put('2','哇');
        map1.put('3','耶');
        map1.put('4','噢');
        map1.put('5','噫');

        byKeySet(map1);
        byEntrySet(map1);
    }

    public static <E1, E2> void byKeySet(Map<E1, E2> map) {
        Set<E1> keySet = map.keySet();
        Iterator<E1> iterator = keySet.iterator();
        while (iterator.hasNext()) {
            E1 key = iterator.next();
            E2 value = map.get(key);
            System.out.println("[" + key + "=" + value + "]");
        }
    }

    public static <E1, E2> void byEntrySet(Map<E1, E2> map) {
        Set<Map.Entry<E1, E2>> entrySet = map.entrySet();
        Iterator<Map.Entry<E1,E2>> iterator= entrySet.iterator();
        while (iterator.hasNext()){
            Map.Entry<E1,E2> entry= iterator.next();
            E1 key=entry.getKey();
            E2 value=entry.getValue();
            System.out.println("{" + key + "=" + value + "}");
        }
    }
}


